// 通过模板实现选择排序
#include <iostream>
using namespace std;
template<class T>
void mySwap(T &a, T &b)
{
    T temp = a;
    a = b;
    b = temp;
}
template<class T>
void mySort(T arr[], int len)
{
    for (int i = 0; i < len; ++i)
    {
        int min = i;
        for (int j = i+1; j < len; ++j)
        {
            if (arr[j] < arr[min])
                min = j;
        }
        if (min != i)
            mySwap(arr[i], arr[min]);
    }
}
template<class T>
void myPrint(T arr[], int len)
{
    for (int i = 0; i < len; ++i)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}
void test1() 
{
    char arr[] = "1673924";
    int len = sizeof(arr) / sizeof(char);
    mySort<char>(arr, len);
    myPrint<char>(arr, len);
}
void test2()
{
    int arr[] = {3, 5, 6, 7, 2, 1};
    int len = sizeof(arr) / sizeof(int);
    mySort<int>(arr, len);
    myPrint<int>(arr, len);
}
int main(void)
{
    test1();
    test2();

    return 0;
}